package com.sh.rpc.registry;

import com.sh.rpc.confige.RegistryConfig;
import com.sh.rpc.model.ServiceMetaInfo;

import java.util.List;

/**
 * 注册中心
 */
public interface Registry {


    /**
     * 初始化
     */
    void init(RegistryConfig registryConfig);


    /**
     * 注册服务 服务端
     */
    void register(ServiceMetaInfo serviceMeteInfo) throws Exception;

    /**
     * 取消注册 服务端
     */
    void unRegister(ServiceMetaInfo serviceMeteInfo) throws Exception;

    /**
     * 查找服务   服务发现
     */
    List<ServiceMetaInfo> serviceDiscovery(String serviceKey) ;

    /**
     * 服务销毁
     */
    void destroy();

    /**
     * 心跳检测（服务端）
     */
    void heartbeat() ;

    /**
     * 监听机制
     */
    void watch(String serviceNodeKey);


}
